From c138aaabf376d8a995a8275e2219f22b9580c48c Mon Sep 17 00:00:00 2001 From: Luca Bacci Date: Tue, 4 Jan 2022 10:44:54 +0100 Subject: [PATCH] Use a GTK grab when showing a modal GtkFileChooserNativeWin32 --- gtk/gtkfilechoosernativewin32.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/gtk/gtkfilechoosernativewin32.c b/gtk/gtkfilechoosernativewin32.c index 505e0b07f0..bd08939e86 100644 --- a/gtk/gtkfilechoosernativewin32.c +++ b/gtk/gtkfilechoosernativewin32.c @@ -41,6 +41,7 @@ #include "gtktogglebutton.h" #include "gtkheaderbar.h" #include "gtklabel.h" +#include "gtkmain.h" #include "gtkfilefilterprivate.h" #include "gtknative.h" @@ -50,6 +51,9 @@ typedef struct { GtkFileChooserNative *self; + + GtkWidget *grab_widget; + IFileDialogEvents *events; HWND parent; @@ -318,6 +322,12 @@ filechooser_win32_thread_data_free (FilechooserWin32ThreadData *data) if (data->events) IFileDialogEvents_Release (data->events); + if (data->grab_widget) + { + gtk_grab_remove (data->grab_widget); + g_object_unref (data->grab_widget); + } + g_clear_object (&data->current_folder); g_clear_object (&data->current_file); g_free (data->current_name); @@ -969,6 +979,12 @@ gtk_file_chooser_native_win32_show (GtkFileChooserNative *self) return FALSE; } + if (data->modal) + { + data->grab_widget = g_object_ref_sink (gtk_label_new ("")); + gtk_grab_add (GTK_WIDGET (data->grab_widget)); + } + return TRUE; } -- 2.30.2